package com.sztx.pay.center.core.service;

import com.sztx.pay.center.core.service.bean.rpc.OrderB2C;
import com.sztx.pay.center.core.service.bean.rpc.OrderB2CList;
import com.sztx.pay.center.core.service.bean.rpc.OrderCallbackList;
import com.sztx.pay.center.core.service.bean.rpc.OrderRecharge;
import com.sztx.pay.center.core.service.bean.rpc.OrderRechargeList;
import com.sztx.pay.center.core.service.bean.rpc.OrderRefund;
import com.sztx.pay.center.core.service.bean.rpc.OrderRefundList;
import com.sztx.pay.center.core.service.bean.rpc.OrderSettleList;
import com.sztx.pay.center.core.service.bean.rpc.OrderTransfer;
import com.sztx.pay.center.core.service.bean.rpc.OrderTransferList;
import com.sztx.pay.center.core.service.bean.rpc.OrderWithdraw;
import com.sztx.pay.center.core.service.bean.rpc.OrderWithdrawList;
import com.sztx.pay.center.core.service.bean.rpc.PayFlowList;
import com.sztx.pay.center.core.service.bean.rpc.QueryOrderCallback;
import com.sztx.pay.center.core.service.bean.rpc.QueryOrderRequest;
import com.sztx.pay.center.core.service.bean.rpc.QueryOrderSettle;
import com.sztx.pay.center.core.service.bean.rpc.QueryUserAccountFlow;
import com.sztx.pay.center.core.service.bean.rpc.UserActFlowList;

public interface DumpQueryService {

	/**
	 * 查询B2C交易数据,仅一条
	 * 
	 * @param request
	 *            查询条件
	 * @return 没查到返回null
	 */
	OrderB2C findOneB2C(QueryOrderRequest request);

	/**
	 * 查询B2C交易数据总数
	 * 
	 * @param request
	 *            查询条件
	 * @return
	 */
	int findB2CCount(QueryOrderRequest request);

	/**
	 * 查询B2C交易数据
	 * 
	 * @param request
	 *            查询条件
	 * @return
	 */
	OrderB2CList findB2C(QueryOrderRequest request, Integer pageNo, Integer pageSize);

	/**
	 * 查询充值数据,仅一条
	 * 
	 * @param request
	 * @return 没查到返回null
	 */
	OrderRecharge findOneRecharge(QueryOrderRequest request);

	/**
	 * 查询充值数据总数
	 * 
	 * @param request
	 * @return
	 */
	int findRechargeCount(QueryOrderRequest request);

	/**
	 * 查询充值数据
	 * 
	 * @param request
	 * @return
	 */
	OrderRechargeList findRecharge(QueryOrderRequest request, Integer pageNo, Integer pageSize);

	/**
	 * 查询退款数据,仅一条
	 * 
	 * @param request
	 * @return 没查到返回null
	 */
	OrderRefund findOneRefund(QueryOrderRequest request);

	/**
	 * 查询退款数据总数
	 * 
	 * @param request
	 * @return
	 */
	int findRefundCount(QueryOrderRequest request);

	/**
	 * 查询退款数据
	 * 
	 * @param request
	 * @return
	 */
	OrderRefundList findRefund(QueryOrderRequest request, Integer pageNo, Integer pageSize);

	/**
	 * 查询转账数据,仅一条
	 * 
	 * @param request
	 * @return 没查到返回null
	 */
	OrderTransfer findOneTransfer(QueryOrderRequest request);

	/**
	 * 查询转账数据总数
	 * 
	 * @param request
	 * @return
	 */
	int findTransferCount(QueryOrderRequest request);

	/**
	 * 查询转账数据
	 * 
	 * @param request
	 * @return
	 */
	OrderTransferList findTransfer(QueryOrderRequest request, Integer pageNo, Integer pageSize);

	/**
	 * 查询提现数据,仅一条
	 * 
	 * @param request
	 * @return 没查到返回null
	 */
	OrderWithdraw findOneWithdraw(QueryOrderRequest request);

	/**
	 * 查询提现数据总数
	 * 
	 * @param request
	 * @return
	 */
	int findWithdrawCount(QueryOrderRequest request);

	/**
	 * 查询提现数据
	 * 
	 * @param request
	 * @return
	 */
	OrderWithdrawList findWithdraw(QueryOrderRequest request, Integer pageNo, Integer pageSize);

	/**
	 * 查询支付流水数据，根据提供的tradeOrderNo
	 * 
	 * @param request
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	PayFlowList findPayFlow(QueryOrderRequest request, Integer pageNo, Integer pageSize);

	/**
	 * 查询订单回调信息
	 * 
	 * @param request
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	OrderCallbackList findOrderCallback(QueryOrderCallback request, Integer pageNo, Integer pageSize);

	/**
	 * 查询订单结算记录
	 * 
	 * @param request
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	OrderSettleList findSettleOrder(QueryOrderSettle request, Integer pageNo, Integer pageSize);

	/**
	 * 查询账户流水
	 * 
	 * @param request
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	UserActFlowList findAccountFlow(QueryUserAccountFlow request, Integer pageNo, Integer pageSize);

	/**
	 * 根据一个B2C订单的订单号查询对应它的退款详情(为了不破坏上面通用的入参实体，因此写了这个方法)
	 * 
	 * @param request
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	OrderRefundList findB2CRefundDetail(String tradeOrderNo);
}
